# 数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中，
# 第5位（从下标0开始计数）是5，第13位是1，第19位是4，等等。
# 请写一个函数，求任意第n位对应的数字。
#
# 来源：力扣（LeetCode）
# 链接：https://leetcode.cn/problems/shu-zi-xu-lie-zhong-mou-yi-wei-de-shu-zi-lcof/
# 输入：n = 3
# 输出：3


class Solution:
    def findNthDigit(self, n: int) -> int:
        if n < 10:
            return n

        num_digit = 2
        num_len = 10
        while 1:
            if num_len + 9 * num_digit * 10 ** (num_digit - 1) > n:
                break
            num_len += 9 * num_digit * 10 ** (num_digit - 1)
            num_digit += 1
        num = n - num_len
        chu, yu = num // num_digit, num % num_digit
        num = chu + 10**(num_digit - 1)
        return int(str(num)[yu])

